import axios from "axios";

// 创建一个 Axios 实例
const instance = axios.create({
  baseURL: "http://localhost:8088", // 你的后端API地址
  timeout: 10000, // 设置请求超时时间
});

// 请求拦截器
instance.interceptors.request.use(
  (config) => {
    // 从 localStorage 中获取 token
    const token = localStorage.getItem("token"); // 你可以根据你的逻辑获取 token
    if (token) {
      // 如果 token 存在，设置请求头
      config.headers.Authorization = `${token}`;
    }
    return config;
  },
  (error) => {
    return Promise.reject(error);
  }
);

// 响应拦截器
instance.interceptors.response.use(
  (response) => {
    // 处理后端返回的 Result 类型的数据
    const result = response.data;

    if (result.code === 20000) {
      // 请求成功，返回响应数据
      return result.data;
    } else {
      // 如果后端的 code 不等于 20000，表示失败
      return Promise.reject(new Error(result.message || "请求失败"));
    }
  },
  (error) => {
    // 如果遇到 token 错误或其他问题，处理 401 错误
    if (error.response && error.response.status === 401) {
      console.error("未授权或 token 过期，请重新登录");
      // 可以在这里跳转到登录页面，或清除缓存的 token 等
    }
    return Promise.reject(error);
  }
);

// 封装的请求方法
export const request = (options) => {
  return instance(options)
    .then((data) => {
      return data; // 返回数据
    })
    .catch((error) => {
      console.error("请求失败：", error);
      throw error; // 抛出错误
    });
};

export default request;
